package Controleur;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import Modele.Client;
import Modele.Station;
import Vue.RendreVelo;

/** Définit l'écouteur des combobox de rendu d'un vélo */
public class RendreVeloComboListener implements ActionListener {

	/** La vue de rendu d'un vélo */
	RendreVelo vueRendreVelo;

	/**
	 * Instancie l'écouteur
	 * 
	 * @param vueRendreVelo
	 *            La vue de rendu d'un vélo
	 */
	public RendreVeloComboListener(RendreVelo vueRendreVelo) {
		this.vueRendreVelo = vueRendreVelo;
	}

	/**
	 * Action lors de l'évenement
	 * 
	 * @param arg0
	 *            Objet de l'évenement
	 */
	@Override
	public void actionPerformed(ActionEvent arg0) {

		if (vueRendreVelo.getComboBoxClient().getSelectedIndex() == -1
				|| vueRendreVelo.getComboBoxStation().getSelectedIndex() == -1) {
			// Si un des deux est nul : Desativation du bouton et divers labels.
			vueRendreVelo.getBtnValider().setEnabled(false);
			vueRendreVelo.getLblLeClientNa().setVisible(false);
			vueRendreVelo.getLblLaStationEst().setVisible(false);
		} else {
			// On cache les labels
			vueRendreVelo.getLblLeClientNa().setVisible(false);
			vueRendreVelo.getLblLaStationEst().setVisible(false);
			vueRendreVelo.getBtnValider().setEnabled(true);

			Client selectedClient = (Client) vueRendreVelo.getComboBoxClient()
					.getSelectedItem();
			Station selectedStation = (Station) vueRendreVelo
					.getComboBoxStation().getSelectedItem();

			// Si le client n'a rien loué
			if (selectedClient.getVeloActuel() == null) {
				// Si le client ne loue pas de vélo actuellement, activation du
				// label, et desactivation du bouton valider
				vueRendreVelo.getBtnValider().setEnabled(false);
				vueRendreVelo.getLblLeClientNa().setVisible(true);
			}

			// Si la station est pleine
			if (selectedStation.getStationnementsActuels().size() >= selectedStation
					.getNbMaxVelo()) {
				// On affiche le label, et désactive le bouton
				vueRendreVelo.getLblLaStationEst().setVisible(true);
				vueRendreVelo.getBtnValider().setEnabled(false);
			}

		}

	}

}
